//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.eight.cloud.payment.service.partnerpayments.wxcodepay.model;

import com.google.gson.annotations.SerializedName;
import com.wechat.pay.java.core.util.StringUtil;
import com.wechat.pay.java.service.partnerpayments.model.PromotionDetail;
import com.wechat.pay.java.service.partnerpayments.model.TransactionAmount;
import com.wechat.pay.java.service.partnerpayments.model.TransactionPayer;
import lombok.Data;

import java.util.List;

@Data
public class PrepayResponse {
    @SerializedName("amount")
    private TransactionAmount amount;
    @SerializedName("sp_appid")
    private String spAppid;
    @SerializedName("sub_appid")
    private String subAppid;
    @SerializedName("sp_mchid")
    private String spMchid;
    @SerializedName("sub_mchid")
    private String subMchid;
    @SerializedName("attach")
    private String attach;
    @SerializedName("bank_type")
    private String bankType;
    @SerializedName("out_trade_no")
    private String outTradeNo;
    @SerializedName("payer")
    private TransactionPayer payer;
    @SerializedName("promotion_detail")
    private List<PromotionDetail> promotionDetail;
    @SerializedName("success_time")
    private String successTime;
    @SerializedName("trade_state")
    private TradeStateEnum tradeState;
    @SerializedName("trade_state_desc")
    private String tradeStateDesc;
    @SerializedName("trade_type")
    private TradeTypeEnum tradeType;
    @SerializedName("transaction_id")
    private String transactionId;

    public PrepayResponse() {
    }


    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class Transaction {\n");
        sb.append("    amount: ").append(StringUtil.toIndentedString(this.amount)).append("\n");
        sb.append("    spAppid: ").append(StringUtil.toIndentedString(this.spAppid)).append("\n");
        sb.append("    subAppid: ").append(StringUtil.toIndentedString(this.subAppid)).append("\n");
        sb.append("    spMchid: ").append(StringUtil.toIndentedString(this.spMchid)).append("\n");
        sb.append("    subMchid: ").append(StringUtil.toIndentedString(this.subMchid)).append("\n");
        sb.append("    attach: ").append(StringUtil.toIndentedString(this.attach)).append("\n");
        sb.append("    bankType: ").append(StringUtil.toIndentedString(this.bankType)).append("\n");
        sb.append("    outTradeNo: ").append(StringUtil.toIndentedString(this.outTradeNo)).append("\n");
        sb.append("    payer: ").append(StringUtil.toIndentedString(this.payer)).append("\n");
        sb.append("    promotionDetail: ").append(StringUtil.toIndentedString(this.promotionDetail)).append("\n");
        sb.append("    successTime: ").append(StringUtil.toIndentedString(this.successTime)).append("\n");
        sb.append("    tradeState: ").append(StringUtil.toIndentedString(this.tradeState)).append("\n");
        sb.append("    tradeStateDesc: ").append(StringUtil.toIndentedString(this.tradeStateDesc)).append("\n");
        sb.append("    tradeType: ").append(StringUtil.toIndentedString(this.tradeType)).append("\n");
        sb.append("    transactionId: ").append(StringUtil.toIndentedString(this.transactionId)).append("\n");
        sb.append("}");
        return sb.toString();
    }

    public static enum TradeTypeEnum {
        @SerializedName("JSAPI")
        JSAPI,
        @SerializedName("NATIVE")
        NATIVE,
        @SerializedName("APP")
        APP,
        @SerializedName("MICROPAY")
        MICROPAY,
        @SerializedName("MWEB")
        MWEB,
        @SerializedName("FACEPAY")
        FACEPAY;

        private TradeTypeEnum() {
        }
    }

    public static enum TradeStateEnum {
        @SerializedName("SUCCESS")
        SUCCESS,
        @SerializedName("REFUND")
        REFUND,
        @SerializedName("NOTPAY")
        NOTPAY,
        @SerializedName("CLOSED")
        CLOSED,
        @SerializedName("REVOKED")
        REVOKED,
        @SerializedName("USERPAYING")
        USERPAYING,
        @SerializedName("PAYERROR")
        PAYERROR,
        @SerializedName("ACCEPT")
        ACCEPT;

        private TradeStateEnum() {
        }
    }
}
